////////////////////////////////////////////////////////////////////////////////////////////////////
/// Copyright (c) 2009 - 2010 RacoonStudios
///
/// Permission is hereby granted, free of charge, to any person obtaining a copy of this
/// software and associated documentation files (the "Software"), to deal in the Software
/// without restriction, including without limitation the rights to use, copy, modify, merge,
/// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
/// to whom the Software is furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in all copies or
/// substantial portions of the Software.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
/// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
/// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
/// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
/// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
/// DEALINGS IN THE SOFTWARE.
////////////////////////////////////////////////////////////////////////////////////////////////////

#pragma once
#ifndef precompiled_h__
#define precompiled_h__

#include "core/config.h"

#include <cassert>
#include <cctype>
#include <cfloat>
#include <climits>
#include <cmath>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <iostream>
#include <fstream>

#ifdef __WIN32__

#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif

// windows include
#include <windows.h>
#include <winbase.h>
#include <shlobj.h>
#include <tchar.h>
#include <algorithm>
#include <assert.h>
#include <time.h>
#include <ctype.h>
#include <strsafe.h>
#include <rpc.h>
#include <winsock2.h>
#include <wininet.h>
#include <intrin.h>
#include <dbghelp.h>
#include <stdlib.h>
#include <stdarg.h>
#include <process.h>
#include <stdlib.h>
#include <stdio.h>

// crt header
#include <math.h>


// SIMD header
#include <xmmintrin.h>
#include <mmintrin.h>

#endif

#ifdef RE_USE_DX11

// DirectX header
#include <D3D11.h>
#include <D3DX11.h>
#include <DxErr.h>
#include <xnamath.h>
#include <DXGI.h>
#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>

#elif RE_USE_DX10

#include <d3d10.h>
#include <d3dx10.h>
#include <dxerr.h>
#include <dxgi.h>
#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>
#include <xnamath.h>

#else

#include <gl\GL.h>
#include <gl\GLU.h>

#endif

// FMOD
#include <fmod.hpp>

#endif // precompiled_h__